package com.example.purchase.view.base;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;

import com.example.purchase.R;
import com.example.purchase.view.ActivityManager;
import com.gyf.immersionbar.ImmersionBar;

import java.util.Objects;

public abstract class BaseActivity<T> extends AppCompatActivity {

    private ImmersionBar mImmersionBar;
    public T dataBinding;
    public String token;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        dataBinding = (T) DataBindingUtil.setContentView(this,getContentLayoutId());
        token = getSharedPreferences("userMessage",Context.MODE_PRIVATE).getString("token","");


        ActivityManager.addActivity(this);

        if (isSetActionBar()){
            setSupportActionBar(findViewById(R.id.toolbar));
            Objects.requireNonNull(getSupportActionBar()).setDisplayShowTitleEnabled(false);         //去除ToolBar标题栏的左上角默认会显示app的标签名
        }

        //初始化数据
        initData();
        //空切换
        initEmpty();
        //点击事件
        initClick();
        //延迟事件
        initTimeOut();

        // 初始化沉浸式状态栏
        if (isStatusBarEnabled()) {
            getStatusBarConfig().init();
        }else {
            if (Build.VERSION.SDK_INT >= 21) {
                getWindow().setStatusBarColor(getStatusBarColor());
                getWindow().setNavigationBarColor(getNavigationBarColor());
                getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);     //设置状态栏字体为黑色
            }
        }
    }

    protected abstract int  getContentLayoutId();

    protected abstract void initData();

    protected abstract void initEmpty();

    protected abstract void initClick();

    protected abstract void initTimeOut();

    /**
     * 是否添加ActionBar
     */
    protected boolean isSetActionBar(){
        return false;
    }

    /**
     * 获取设置状态栏背景色
     */
    protected int getStatusBarColor(){
        return 0xF5F5F5F5;
    }

    /**
     * 获取设置导航栏背景色
     */
    protected int getNavigationBarColor(){
        return 0xF5F5F5F5;
    }

    /**
     * 是否使用沉浸式状态栏
     */
    protected boolean isStatusBarEnabled() {
        return true;
    }

    /**
     * 状态栏字体深色模式
     */
    protected boolean isStatusBarDarkFont() {
        return true;
    }

    /**
     * 获取状态栏沉浸的配置对象
     */
    public ImmersionBar getStatusBarConfig() {
        if (mImmersionBar == null) {
            mImmersionBar = createStatusBarConfig();
        }
        return mImmersionBar;
    }

    /**
     * 默认初始化沉浸式状态栏
     */
    protected ImmersionBar createStatusBarConfig() {
        return ImmersionBar.with(this)
                .statusBarDarkFont(isStatusBarDarkFont())
                .transparentStatusBar()
                .transparentNavigationBar();
    }
}